import cv2
import numpy as np

# 尝试读取图片
img = cv2.imread('pic/trafficLight.jpg')
cv2.imshow('image', img)

# 将图像从BGR颜色空间转换为HSV颜色空间
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# 定义红色的HSV范围（注意红色跨越0度和180度）
lower_red1 = np.array([0, 100, 100])
upper_red1 = np.array([10, 255, 255])
lower_red2 = np.array([160, 100, 100])
upper_red2 = np.array([180, 255, 255])

# 创建两个掩码，分别对应红色的两个范围
mask1 = cv2.inRange(hsv, lower_red1, upper_red1)
mask2 = cv2.inRange(hsv, lower_red2, upper_red2)

# 将两个掩码合并
mask = cv2.bitwise_or(mask1, mask2)

# 将掩码应用于原始图像，以获取分割后的红色区域
red_light = cv2.bitwise_and(img, img, mask=mask)

# 显示分割后的红灯图像
cv2.imshow('Red Light', red_light)

# 等待按键按下，任意键可关闭窗口
cv2.waitKey(0)
# 关闭所有OpenCV窗口
cv2.destroyAllWindows()
